package Homes;


import java.util.ArrayList;

import org.uqbar.commons.utils.Home;

import Condiciones.Condicion;
import Aplicacion.Acumulador;
import Aplicacion.Infraccion;
import Aplicacion.Vehiculo;

public class InfraccionesHome extends Home<Infraccion> {
	
	private static InfraccionesHome instance = null;
	private Acumulador acumulador;
	
	public InfraccionesHome(){
		super(Infraccion.class);
		this.acumulador = new Acumulador();
	}
	
	public static void reset(){
		instance = null;
	}
	
	public static synchronized InfraccionesHome getInstance(){
		if (instance == null)
			instance = new InfraccionesHome();
		return instance;
	}	
		
	public void setAcumulador(Acumulador acumulador){
		this.acumulador = acumulador;
	}
	
	public void filterByCondicion(Condicion condicion){
		
		for (Infraccion infraccion: this.getObjects()){			
			condicion.procesarAcumulador(acumulador, infraccion);
		}
	}
	
	public ArrayList<Infraccion> getAll(){
		return (ArrayList<Infraccion>) this.getObjects();
	}
	
	public void objetarInfraccion(Vehiculo vehiculo, Infraccion infraccion){
		
		/* El dueño del vehiculo objetó la infracción y el sistema lo aceptó */
		infraccion.setInvalidada();		
		vehiculo.procesarDesasignacion();
	}

	public void add(Infraccion infraccion) {
		super.add(infraccion);
	}
}